iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
自我挑戰組

laravel+vue 學習系列 第 27

Day27. API 身分驗證 ( OAuth )

  • 分享至 

  • xImage
  •  

一、 OAuth

  1. API 為無狀態, 無法使用一般 Session 流程來驗證身分
  2. API 用戶須先發出請求到 Authorization Server ( 驗證伺服器 ) 進行身分驗證, 取回 Access token 後, 才可以請求資源
  3. 每次請求資源時, 須提供給資源永擁者( Resource Owner ) Access token, 通常會放在 Authorization 的標頭來驗證身分

二、 OAuth Flow

  1. 在應用程式中選擇驗證方式, e.g. 向 google 請求身分驗證
  2. 應用程式會使用 Query String 帶入 Redirect URI 等資訊給 google 進行分慎驗證
  3. 驗證完成後 google 會詢問是否同意應用程式取得 google 資料(若不同意停於此)
  4. google 導回到應用程式提供的 Redirect URI 位置, 並取得 Authorization Code
  5. 應用程式使用 Authorization Code 向 google 請求 Access Token
  6. 使用者、應用程式使用 Access Token 向 google (Resource Owner) 取回對應的資源

三、 取得 Access Token 的方式

  1. Authorization Code
    • 類似 Laravel Passport 授權密碼授權
    • 流程
      • 應用程式會使用 Query String 帶入 Redirect URI 等資訊給 google 進行分慎驗證
      • 驗證完成後會帶 Authorization Code 會給應用程式 ( header response-type: code )
      • 應用程式再利用 Authorization Code 向 google 取的 Access Token
      • 最後用 Access Token 向 Resource Owner 請求資源
  2. implicit
    • 應用程式會使用 Query String 帶入 Redirect URI 等資訊給 google 進行分慎驗證 ( header response-type: token )
    • 驗證完成後會帶 Access Token 會給應用程式
    • 最後用 Access Token 向 Resource Owner 請求資源

3.Resource Owner Password Credentials
* 使用者提供帳號與密碼給應用程式並儲存
* 應用程式直接使用使用者的帳號與密碼向 Authorization Server 取得 Access Token
* 最後用 Access Token 向 Resource Owner 請求資源

  1. Client Credentials
    • 類似 Laravel Passport 密碼授權
    • 應用程式提供 Client ID、 Client Secert 向 Authorization Server 取回 Access Token
    • 最後用 Access Token 向 Resource Owner 請求資源

上一篇
Day26. 前台 API 與頁面之五 ( 切割頁面區塊 )
下一篇
Day28. 帳號授權與角色
系列文
laravel+vue 學習32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言